/**
 * 给定数组，要求改变最少的次数使其变为非排列
 * 问如何修改。
 * 首先检查一下是否为排列，如果是直接将A[1]加加即可
 * 如果不是就不用改
 */
#include <bits/stdc++.h>
#include <bits/extc++.h>
using namespace std;

using llt = long long;
using vi = vector<int>;
using vll = vector<llt>;

template<typename T>
void input(vector<T>&v, int n){
    v.assign(n + 1, {});
    for(int i=1;i<=n;++i)cin>>v[i];
    return;
}

int N;
vi A;


void work(){
    cin >> N;
    A.assign(N + 1, 0);
    input(A, N);

    vi cnt(N + 1, 0);
    for(int i=1;i<=N;++i){
        if(1 <= A[i] and A[i] <= N){
            if(cnt[A[i]]) return (void)(cout << "0\n");
            cnt[A[i]] = 1;
        }else{
            return (void)(cout << "0\n");
        }
    }
    auto t = A[1] - 1;
    if(t == 0) t = 2;
    cout << "1\n1 " << t << endl;
    return;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	int nofkase = 1;
    // cin >> nofkase;
    while(nofkase--) {
		work();
	}
    return 0;
}